1143C - Queen - CodeForces Solution


dfs and similar trees *1400

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin(), x.end()
#define sort(x) sort(all(x))
#define uniq(x) unique(all(x))
#define count(s, c) count(all(s), c)
constexpr int MAXN = 1e5;
template<typename _Tp>
ostream& operator << (ostream& o, vector<_Tp>& v){
  for(_Tp& x : v)
    o << x+1 << ' ';
  return o;
}
int p[MAXN], c[MAXN];
vector<int> ans;
vector<int> parentChildGraph[MAXN];
void DFS(int node){
  bool ok=c[node];
  for(int i: parentChildGraph[node]){
    ok &= c[i];
    DFS(i);
  }
  if(ok) ans.emplace_back(node);
}
signed main(){
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int tt=1;
  #ifdef MULTITEST
  cin >> tt;
  #endif
  while(tt--){
    int n;
    cin >> n;
    int root;
    for(int i=0; i<n; ++i){
      cin >> p[i] >> c[i];
      --p[i];
      if(p[i]==-2)
        root=i;
      else
        parentChildGraph[p[i]].emplace_back(i);
    }

    DFS(root);
    if(ans.empty())
      cout << -1;
    else{
      sort(ans);
      cout << ans;
    }
    if(tt)  cout << endl;
  }
  return 0;
}


Comments

Submit
0 Comments
More Questions

415. Add Strings
22. Generate Parentheses
13. Roman to Integer
2. Add Two Numbers
515. Find Largest Value in Each Tree Row
345. Reverse Vowels of a String
628. Maximum Product of Three Numbers
1526A - Mean Inequality
1526B - I Hate 1111
1881. Maximum Value after Insertion
237. Delete Node in a Linked List
27. Remove Element
39. Combination Sum
378. Kth Smallest Element in a Sorted Matrix
162. Find Peak Element
1529A - Eshag Loves Big Arrays
19. Remove Nth Node From End of List
925. Long Pressed Name
1051. Height Checker
695. Max Area of Island
402. Remove K Digits
97. Interleaving String
543. Diameter of Binary Tree
124. Binary Tree Maximum Path Sum
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts
501A - Contest
160A- Twins
752. Open the Lock
1535A - Fair Playoff
1538F - Interesting Function